It is widely held that software-only solutions to clock synchronization suffer from inevitable “system noise” (process dispatching, interrupt handling etc.) that limit accuracy to 10 microseconds or worse. When microsecond-level synchronization is needed, hardware solutions are employed, e.g., network adapters with IEEE 1588 (Precise Time Protocol) support at both ends of the communications link.
As depicted in FIG. 1A, the typical software timestamp exchange has client node A send a timestamp T1 to server node B, which receives it at time T2. Server node B then sends a reply at time T3, and client node A receives it at time T4. T1 and T4 are measured using client node A's clock; T2 and T3 are measured on server node B's clock. From this information the offset between the clocks of client A and server B can be determined—but software as well as hardware delays contribute to high jitter. IEEE 1588 takes the timestamps at the hardware level, and provides an interface to collect those timestamps.